library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(ggpubr)
library(gghalves)
library(ggrepel)

data<- readRDS("/Users/xu/Desktop/1_project/ErlCART_Xenium_ResScore_250402184029.rds")
obj <- data
ordercolors<- c("#84c3b7","#b8aeeb","#f57c6e","#f8bb6e","#88d8db","#f2a7da","#add187","#8481ba","#e74434","#f8c7b4","#71b7ed", "#cedfef","#1864aa","#ee7e18","#4a94c6","#fae69e")


selected_columns <- c( "merged_annotation" ,"CARTacute" ,"CARTsustained") 
metadata_df <- data@meta.data[, selected_columns] %>% as.data.frame()

p <- ggplot(data = metadata_df,  
       aes(x=merged_annotation, y=CARTacute, fill=merged_annotation)) +
  
  geom_half_violin(side = "r", color=NA, alpha=0.4) +
  
  geom_half_boxplot(side = "r", errorbar.draw = FALSE, width=0.2, linewidth=0.8) +
  
  geom_half_point_panel(side = "l", shape=21, size=3, color="white") +
  
  scale_fill_manual(values = ordercolors,name = "Major Celltype") +

  
  labs(y=NULL,x=NULL,title = "Acute CAR-T response") +
  
  rotate_x_text(angle = 45)+ 
  
  geom_hline(yintercept = mean(metadata_df$`CARTacute`), linetype=2)+

  theme(plot.title = element_text(hjust = 0.5,size = 16, face = "bold"),
        legend.position = "none",
        panel.background = element_blank(),
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.text=element_text(size=14,color="black",face="bold",family = "Arial"),
        axis.title.y = element_text(color="black", size=14, face="bold"),
        axis.line = element_line(size=0.8, colour = "black"))
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
p

ggsave("Acute CAR-T response.pdf", plot = p, width = 12, height =5, units = "in", device = cairo_pdf)
ggsave(
  filename = "Acute CAR-T response.png",
  plot = p,
  width = 12,          
  height = 8,         
  dpi = 600           
)
p1 <- ggplot(data = metadata_df,  
       aes(x=merged_annotation, y=CARTsustained, fill=merged_annotation)) +
  
  geom_half_violin(side = "r", color=NA, alpha=0.4) +
  
  geom_half_boxplot(side = "r", errorbar.draw = FALSE, width=0.2, linewidth=0.8) +
 
  geom_half_point_panel(side = "l", shape=21, size=3, color="white") +
  
  scale_fill_manual(values = ordercolors,name = "Major Celltype") +
  
  labs(y=NULL,x=NULL,title = "Sustained CAR-T response") +

  rotate_x_text(angle = 45)+ 
  geom_hline(yintercept = mean(metadata_df$`CARTsustained`), linetype=2)+
  theme(plot.title = element_text(hjust = 0.5,size = 16, face = "bold"),
        legend.position = "bottom",
        panel.background = element_blank(),
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.text=element_text(size=12,color="black"),
        axis.title.y = element_text(color="black", size=14, face="bold"),
        axis.line = element_line(size=0.8, colour = "black"))
p1

#ggsave("Sustained CAR-T response.pdf", plot = p1, width = 12, height =5, units = "in", device = cairo_pdf)
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
library(viridis)
## Loading required package: viridisLite
library(spatialEco)
## 
## Attaching package: 'spatialEco'
## The following object is masked from 'package:dplyr':
## 
##     combine
library(sf)
## Linking to GEOS 3.13.0, GDAL 3.8.5, PROJ 9.5.1; sf_use_s2() is TRUE
library(ggsci)

res_score <- data.frame(acute = obj$CARTacute, sample_id = obj$SampleId)
## Loading required package: SeuratObject
## Loading required package: sp
## 'SeuratObject' was built under R 4.4.0 but the current version is
## 4.4.2; it is recomended that you reinstall 'SeuratObject' as the ABI
## for R may have changed
## 'SeuratObject' was built with package 'Matrix' 1.7.0 but the current
## version is 1.7.2; it is recomended that you reinstall 'SeuratObject' as
## the ABI for 'Matrix' may have changed
## 
## Attaching package: 'SeuratObject'
## The following objects are masked from 'package:base':
## 
##     intersect, t
coords <- do.call(rbind, lapply(Images(obj), function(i)GetTissueCoordinates(obj, i)))
coords <- coords[match(colnames(obj), coords$cell),] %>% column_to_rownames('cell')
res_score <- cbind(res_score, coords)

types <- unique(obj$merged_annotation)
cols <- pal_nejm()(length(types)) %>% setNames(types)
## Warning: This manual palette can handle a maximum of 8 values. You have
## supplied 10
for (i in unique(obj$SampleId)) {
  cat('\n\n###', i, '\n\n')
  
  scores <- res_score[res_score$sample_id == i, ]
  scores <- sf::st_as_sf(scores, coords = c('x', 'y'))
  acute <- sp.kde(scores,
                  y = scores$acute,
                  res = 8,
                  scale.factor = 1000)
  acute <- as.data.frame(acute, xy = TRUE)
  
  tmp <- obj[, obj$SampleId == i]
  
  group <- obj@meta.data[obj$SampleId == i, 'fourgroups'][1]
  pid <- obj@meta.data[obj$SampleId == i, 'Patient'][1]
  
  
  polys <- tmp[[Images(tmp)[[1]]]][['segmentations']]@polygons %>% SpatialPolygons() %>% sf::st_as_sf()
  
  breaks <-  c(-3.5, -1, 0,1, 3.5)
  colors <- c("#7cc042",
  '#bcda8c40',
  '#00000000',  
  "#cbb2d840","#8278b7")
  labels <- c("-2","-1", "0", "1","2") 
  p1 <- ggplot() +
    # Plot the spatial polygons (boundaries)
    geom_sf(data = polys, fill = 'lightgrey', size = 0) +  # Adjust color and size
    # Plot the KDE (density estimation) with geom_tile
    geom_tile(data = acute, aes(
      x = x,
      y = y,
      fill = z
    )) +  
    scale_fill_gradientn(
      colors = colors,
      values = scales::rescale_mid(breaks, mid = 0),
    breaks = breaks,
     labels = labels, 
    limits = c(-3.5, 3.5), oob = scales::squish) +
    theme_minimal() +
    theme(
      axis.text = element_blank(),
      # Remove axis text
      axis.title = element_blank(),
      # Remove axis titles
      axis.ticks = element_blank(),
      # Remove axis ticks
      panel.grid = element_blank(),
      # Remove grid lines
    legend.position = "bottom") +
    ggtitle(paste0(i, ' - ', group,' - acute CART'))
  
  print(p1)
if (i == "SSc213") {
    ggsave(paste0(i, "_acute_CART.png"), plot = p1, width = 8, height = 6, dpi = 600)
  ggsave(p1,file=paste0(i, "_acute_CART.pdf"),width=8,height=6)
  }
  

}
## 
## 
## ### SSc230
## Using 420.089, 363.345 for bandwidth
## 
## calculating weighted kde
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc233
## Using 336.66, 407.075 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc248
## Using 265.956, 667.962 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc249
## Using 255.227, 346.971 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc240
## Using 487.066, 270.688 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc241
## Using 181.457, 545.999 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc239
## Using 344.668, 483.097 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc256
## Using 477.736, 386.439 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc246
## Using 432.492, 275.209 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc261
## Using 356.125, 346.625 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc250
## Using 463.067, 334.879 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc237
## Using 217.571, 376.223 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc234
## Using 334.794, 495.991 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc247
## Using 393.358, 224.681 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc244
## Using 219.189, 507.376 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc264
## Using 514.565, 431.666 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc253
## Using 379.712, 620.325 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc213
## Using 217.16, 245.65 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc225
## Using 204.448, 341.665 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### HAUCK
## Using 244.177, 243.817 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc224
## Using 147.33, 313.771 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects

## 
## 
## ### SSc214
## Using 166.57, 295.907 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects

## 
## 
## ### SSc223
## Using 257.219, 291.948 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects

obj$IsFib <- as.numeric(obj$fibroblast_subtype != 'other')
res_score <- data.frame( Fib = obj$IsFib, sample_id = obj$SampleId)
coords <- do.call(rbind, lapply(Images(obj), function(i)GetTissueCoordinates(obj, i)))
coords <- coords[match(colnames(obj), coords$cell),] %>% column_to_rownames('cell')
res_score <- cbind(res_score, coords)

types <- unique(obj$merged_annotation)
cols <- pal_nejm()(length(types)) %>% setNames(types)
## Warning: This manual palette can handle a maximum of 8 values. You have
## supplied 10
for (i in unique(obj$SampleId)) {
  cat('\n\n###', i, '\n\n')
  
  scores <- res_score[res_score$sample_id == i, ]
  scores <- sf::st_as_sf(scores, coords = c('x', 'y'))

  fib <- sp.kde(
    scores,
    y = scores$Fib,
    res = 8,
    scale.factor = 1000
  )
  fib <- as.data.frame(fib, xy = TRUE)
  
  
  tmp <- obj[, obj$SampleId == i]
  
  group <- obj@meta.data[obj$SampleId == i, 'fourgroups'][1]
  pid <- obj@meta.data[obj$SampleId == i, 'Patient'][1]
  
  
  polys <- tmp[[Images(tmp)[[1]]]][['segmentations']]@polygons %>% SpatialPolygons() %>% sf::st_as_sf()
  
 breaks <- c(-0.9, -0.5, 0, 0.5, 0.9)
  colors <- c("#7cc042",
  '#bcda8c40',
  '#00000000',  
  "#cbb2d840","#8278b7")
  
  
  p2 <- ggplot() +
    # Plot the spatial polygons (boundaries)
    geom_sf(data = polys, fill = 'grey80') +  # Adjust color and size
    # Plot the KDE (density estimation) with geom_tile
    geom_tile(data = fib, aes(
      x = x,
      y = y,
      fill = z
    )) + 
    scale_fill_gradientn(
    colors = colors,
    values =  scales::rescale_mid(breaks, mid = 0),
    limits = c(-2.5, 2.5), oob = scales::squish) + 
    theme_minimal() +
    theme(
      axis.text = element_blank(),
      # Remove axis text
      axis.title = element_blank(),
      # Remove axis titles
      axis.ticks = element_blank(),
      # Remove axis ticks
      panel.grid = element_blank(),
      # Remove grid lines
      panel.border = element_blank(),
   
    legend.position = "bottom") +
    ggtitle(paste0(i, ' - ', group,' - fibroblast density'))
   print(p2)
  if (i == "SSc213") {
    ggsave(paste0(i, "_fibroblast density.png"), plot = p2, width = 8, height = 6, dpi = 600)
  ggsave(p2,file=paste0(i, "_fibroblast density.pdf"),width=8,height=6)
  }
  
  
 }
## 
## 
## ### SSc230
## Using 420.089, 363.345 for bandwidth
## 
## calculating weighted kde
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc233
## Using 336.66, 407.075 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc248
## Using 265.956, 667.962 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc249
## Using 255.227, 346.971 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc240
## Using 487.066, 270.688 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc241
## Using 181.457, 545.999 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc239
## Using 344.668, 483.097 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc256
## Using 477.736, 386.439 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc246
## Using 432.492, 275.209 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc261
## Using 356.125, 346.625 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc250
## Using 463.067, 334.879 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc237
## Using 217.571, 376.223 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc234
## Using 334.794, 495.991 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc247
## Using 393.358, 224.681 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc244
## Using 219.189, 507.376 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc264
## Using 514.565, 431.666 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc253
## Using 379.712, 620.325 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc213
## Using 217.16, 245.65 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc225
## Using 204.448, 341.665 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### HAUCK
## Using 244.177, 243.817 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects
## Not validating Seurat objects

## 
## 
## ### SSc224
## Using 147.33, 313.771 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects

## 
## 
## ### SSc214
## Using 166.57, 295.907 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects

## 
## 
## ### SSc223
## Using 257.219, 291.948 for bandwidth
## 
## 
## calculating weighted kde
## Warning: Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Not validating Seurat objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Not validating Centroids objects
## Warning: Not validating FOV objects
## Warning: Not validating Centroids objects
## Warning: Not validating FOV objects
## Not validating FOV objects
## Not validating FOV objects
## Warning: Not validating Seurat objects

library(scCustomize)
## Loading required package: Seurat
## scCustomize v3.0.1
## If you find the scCustomize useful please cite.
## See 'samuel-marsh.github.io/scCustomize/articles/FAQ.html' for citation info.
library(cowplot)
## 
## Attaching package: 'cowplot'
## The following object is masked from 'package:ggpubr':
## 
##     get_legend
## The following object is masked from 'package:lubridate':
## 
##     stamp
color_pal <- colorRampPalette(c("#dedeea", "#bcb9d8","#8488b5","#61678b"))(50)



p <- FeaturePlot_scCustom(
  seurat_object = data,
  features = "CARTacute",
  order = TRUE,
  colors_use = color_pal,
  alpha_exp = 0.4
  #na_cutoff = FALSE
) +
  NoAxes() +
  theme(legend.position = "bottom", legend.justification = "center") 
## Warning: Some of the plotted features are from meta.data slot.
## • Please check that `na_cutoff` param is being set appropriately for those
##   features.
## 
## NOTE: FeaturePlot_scCustom uses a specified `na_cutoff` when plotting to
## color cells with no expression as background color separate from color scale.
## Please ensure `na_cutoff` value is appropriate for feature being plotted.
## Default setting is appropriate for use when plotting from 'RNA' assay.
## When `na_cutoff` not appropriate (e.g., module scores) set to NULL to
## plot all cells in gradient color palette.
## 
## -----This message will be shown once per session.-----
arrow <- arrow(angle = 20, type = "closed", length = unit(0.1, "npc"))
umap_coord <- ggplot(tibble(group = c("UMAP_1", "UMAP_2"),
                            x = c(0, 0), xend = c(1, 0),
                            y = c(0, 0), yend = c(0, 1),
                            lx = c(0.5, -0.15), ly = c(-0.15, 0.5),
                            angle = c(0, 90))) +
  geom_segment(aes(x, y, xend = xend, yend = yend, group = group),
               arrow = arrow, size = 1, lineend = "round") +
  geom_text(aes(lx, ly, label = group, angle = angle), size = 4) +
  theme_void() +
  coord_fixed(xlim = c(-0.3, 1), ylim = c(-0.3, 1))
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
p_full <- ggdraw() +
  draw_plot(p + NoAxes(), scale = 0.9) +
  draw_plot(umap_coord, x = 0.05, y = 0.05, width = 0.2, height = 0.2)
p_full 

ggsave(p_full,file="acutescore_featureplot.pdf",width=8,height=6)
ggsave(
  filename = "acutescore_featureplot.png",
  plot = p_full,
  width = 8,          
  height = 6,         
  dpi = 600           
)